iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

要將兩份無法公開分享的 Google 試算表資料採集到 Google 表單中,需要在 Google Apps Script 中設置兩個主要部分:

  1. 從私有試算表中提取資料:使用 Apps Script 中的 SpreadsheetAppSpreadsheet 服務來訪問試算表資料。
  2. 將資料寫入 Google 表單:使用 FormAppForm 服務來動態創建或填寫 Google 表單中的資料。

以下是 Google Apps Script 的範例程式碼,您可以按照此範例進行修改來適應您的具體需求。

步驟 1:從兩個試算表中讀取資料

function syncDataToForm() {
  // 設置兩個試算表的 ID
  var sheet1Id = '你的試算表1 ID';
  var sheet2Id = '你的試算表2 ID';

  // 訪問試算表 1
  var sheet1 = SpreadsheetApp.openById(sheet1Id).getSheetByName('工作表名稱');
  var data1 = sheet1.getRange(2, 1, sheet1.getLastRow() - 1, sheet1.getLastColumn()).getValues();

  // 訪問試算表 2
  var sheet2 = SpreadsheetApp.openById(sheet2Id).getSheetByName('工作表名稱');
  var data2 = sheet2.getRange(2, 1, sheet2.getLastRow() - 1, sheet2.getLastColumn()).getValues();

  // 將資料合併成一個陣列
  var combinedData = data1.concat(data2);

  // 設置 Google 表單 ID
  var formId = '你的 Google 表單 ID';
  var form = FormApp.openById(formId);

  // 清除表單中的所有項目
  clearFormItems(form);

  // 根據合併的資料創建表單題目
  for (var i = 0; i < combinedData.length; i++) {
    var row = combinedData[i];
    var questionTitle = row[0]; // 取出資料中第一列作為問題標題(根據需求調整)

    form.addMultipleChoiceItem()
      .setTitle(questionTitle)
      .setChoiceValues(row.slice(1)); // 取出後續列作為選項(根據需求調整)
  }
}

// 清除表單中的所有項目
function clearFormItems(form) {
  var items = form.getItems();
  for (var i = 0; i < items.length; i++) {
    form.deleteItem(items[i]);
  }
}

程式碼解說:

  1. syncDataToForm() 函數

    • 設置兩個試算表的 ID,然後訪問並讀取資料。
    • 使用 getRange() 方法來讀取資料,跳過第一行(通常是標題行)。
    • 將兩個試算表的資料合併成一個陣列 combinedData
    • 訪問指定的 Google 表單,並清空原有的所有項目。
    • 根據合併的資料創建 Google 表單中的題目和選項。
  2. clearFormItems() 函數

    • 清除表單中的所有項目,以便在每次同步時不會產生重複的題目。

步驟 2:授權存取權限

您需要確保腳本擁有讀取這兩份試算表和編輯 Google 表單的權限。

  1. 在 Apps Script 編輯器中,點擊 執行 -> 選擇函數 -> 選擇 syncDataToForm
  2. 執行該函數,系統會要求您授權,請按指示完成授權。

注意事項

  1. 試算表權限:確保您使用的帳戶對這兩個試算表具有存取權限(編輯權限)。
  2. 表單的題目格式:範例程式碼假設第一列是問題標題,後續列是選項。如果您的資料格式不同,請根據需求調整 row 陣列的訪問方式。
  3. 自動化設置:您可以設置時間驅動觸發器(如每小時運行一次)來自動化執行此腳本。方法是在 Apps Script 編輯器中點擊 編輯 -> 目前專案的觸發條件 -> 添加觸發條件。

這樣,就能實現從無法公開分享的兩個試算表同步資料至 Google 表單中,可以進一步自定義程式碼以實現不同的資料映射和表單創建邏輯。


上一篇
系統之外的其他自動化
下一篇
即時同步Google表單資料
系列文
挑戰CRM客戶支援系統搬到Odoo的跨平台RPA工程31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言